From 76aa237cceda533b72b9aa535d6d2dab636263f3 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 8 Oct 2017 21:12:22 -0400 Subject: [PATCH] Fix blendmode shader My reading of the spec formulas was imperfect. --- .../vulkan/blendmode-clip-rounded.frag.spv | Bin 32700 -> 33432 bytes gsk/resources/vulkan/blendmode-clip.frag.spv | Bin 25928 -> 26660 bytes gsk/resources/vulkan/blendmode.frag | 204 +++++++++--------- gsk/resources/vulkan/blendmode.frag.spv | Bin 25928 -> 26660 bytes 4 files changed, 106 insertions(+), 98 deletions(-) diff --git a/gsk/resources/vulkan/blendmode-clip-rounded.frag.spv b/gsk/resources/vulkan/blendmode-clip-rounded.frag.spv index b204175b0f5f5055bed90b8a8bb2f983f6483346..1b8e07c1b5d44ec98136bb9b9c79a4bf5f54097b 100644 GIT binary patch literal 33432 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 t=Yy?Xo7XLm?So+J&}I+h+FaXy;h>Fq# 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 diff --git a/gsk/resources/vulkan/blendmode.frag b/gsk/resources/vulkan/blendmode.frag index 4e448acd5c..a8b23e9891 100644 --- a/gsk/resources/vulkan/blendmode.frag +++ b/gsk/resources/vulkan/blendmode.frag @@ -12,25 +12,42 @@ layout(set = 1, binding = 0) uniform sampler2D endTexture; layout(location = 0) out vec4 outColor; -vec3 -multiply (vec3 source, vec3 backdrop, float opacity) +float +combine (float source, float backdrop) { - vec3 result = source * backdrop; - return mix (source, result, opacity); + return source + backdrop * (1 - source); } -vec3 -difference (vec3 source, vec3 backdrop, float opacity) +vec4 +composite (vec4 Cs, vec4 Cb, vec3 B) { - vec3 result = abs (source - backdrop); - return mix (source, result, opacity); + float ao = Cs.a + Cb.a * (1 - Cs.a); + vec3 Co = (Cs.a*(1 - Cb.a)*Cs.rgb + Cs.a*Cb.a*B + (1 - Cs.a)*Cb.a*Cb.rgb) / ao; + return vec4(Co, ao); } -vec3 -screen (vec3 source, vec3 backdrop, float opacity) +vec4 +normal (vec4 Cs, vec4 Cb) +{ + return composite (Cs, Cb, Cs.rgb); +} + +vec4 +multiply (vec4 Cs, vec4 Cb) { - vec3 result = source + backdrop - source * backdrop; - return mix (source, result, opacity); + return composite (Cs, Cb, Cs.rgb * Cb.rgb); +} + +vec4 +difference (vec4 Cs, vec4 Cb) +{ + return composite (Cs, Cb, abs(Cs.rgb - Cb.rgb)); +} + +vec4 +screen (vec4 Cs, vec4 Cb) +{ + return composite (Cs, Cb, Cs.rgb + Cb.rgb - Cs.rgb * Cb.rgb); } float @@ -42,13 +59,13 @@ hard_light (float source, float backdrop) return 2 * (backdrop + source - backdrop * source) - 1; } -vec3 -hard_light (vec3 source, vec3 backdrop, float opacity) +vec4 +hard_light (vec4 Cs, vec4 Cb) { - vec3 result = vec3 (hard_light (source.r, backdrop.r), - hard_light (source.g, backdrop.g), - hard_light (source.b, backdrop.b)); - return mix (source, result, opacity); + vec3 B = vec3 (hard_light (Cs.r, Cb.r), + hard_light (Cs.g, Cb.g), + hard_light (Cs.b, Cb.b)); + return composite (Cs, Cb, B); } float @@ -67,33 +84,36 @@ soft_light (float source, float backdrop) return backdrop + (2 * source - 1) * (db - backdrop); } -vec3 -soft_light (vec3 source, vec3 backdrop, float opacity) +vec4 +soft_light (vec4 Cs, vec4 Cb) { - vec3 result = vec3 (soft_light (source.r, backdrop.r), - soft_light (source.g, backdrop.g), - soft_light (source.b, backdrop.b)); - return mix (source, result, opacity); + vec3 B = vec3 (soft_light (Cs.r, Cb.r), + soft_light (Cs.g, Cb.g), + soft_light (Cs.b, Cb.b)); + return composite (Cs, Cb, B); } -vec3 -overlay (vec3 source, vec3 backdrop, float opacity) +vec4 +overlay (vec4 Cs, vec4 Cb) { - return hard_light (backdrop, source, opacity); + vec3 B = vec3 (hard_light (Cb.r, Cs.r), + hard_light (Cb.g, Cs.g), + hard_light (Cb.b, Cs.b)); + return composite (Cs, Cb, B); } -vec3 -darken (vec3 source, vec3 backdrop, float opacity) +vec4 +darken (vec4 Cs, vec4 Cb) { - vec3 result = min (source, backdrop); - return mix (source, result, opacity); + vec3 B = min (Cs.rgb, Cb.rgb); + return composite (Cs, Cb, B); } -vec3 -lighten (vec3 source, vec3 backdrop, float opacity) +vec4 +lighten (vec4 Cs, vec4 Cb) { - vec3 result = max (source, backdrop); - return mix (source, result, opacity); + vec3 B = max (Cs.rgb, Cb.rgb); + return composite (Cs, Cb, B); } float @@ -102,13 +122,13 @@ color_dodge (float source, float backdrop) return (source == 1.0) ? source : min (backdrop / (1.0 - source), 1.0); } -vec3 -color_dodge (vec3 source, vec3 backdrop, float opacity) +vec4 +color_dodge (vec4 Cs, vec4 Cb) { - vec3 result = vec3 (color_dodge (source.r, backdrop.r), - color_dodge (source.g, backdrop.g), - color_dodge (source.b, backdrop.b)); - return mix (source, result, opacity); + vec3 B = vec3 (color_dodge (Cs.r, Cb.r), + color_dodge (Cs.g, Cb.g), + color_dodge (Cs.b, Cb.b)); + return composite (Cs, Cb, B); } @@ -118,20 +138,20 @@ color_burn (float source, float backdrop) return (source == 0.0) ? source : max ((1.0 - ((1.0 - backdrop) / source)), 0.0); } -vec3 -color_burn (vec3 source, vec3 backdrop, float opacity) +vec4 +color_burn (vec4 Cs, vec4 Cb) { - vec3 result = vec3 (color_burn (source.r, backdrop.r), - color_burn (source.g, backdrop.g), - color_burn (source.b, backdrop.b)); - return mix (source, result, opacity); + vec3 B = vec3 (color_burn (Cs.r, Cb.r), + color_burn (Cs.g, Cb.g), + color_burn (Cs.b, Cb.b)); + return composite (Cs, Cb, B); } -vec3 -exclusion (vec3 source, vec3 backdrop, float opacity) +vec4 +exclusion (vec4 Cs, vec4 Cb) { - vec3 result = backdrop + source - 2.0 * backdrop * source; - return mix (source, result, opacity); + vec3 B = Cb.rgb + Cs.rgb - 2.0 * Cb.rgb * Cs.rgb; + return composite (Cs, Cb, B); } float @@ -221,86 +241,74 @@ set_sat (vec3 c, float s) return res; } -vec3 -color (vec3 source, vec3 backdrop, float opacity) -{ - vec3 result = set_lum (source, lum (backdrop)); - return mix (source, result, opacity); -} - -vec3 -hue (vec3 source, vec3 backdrop, float opacity) +vec4 +color (vec4 Cs, vec4 Cb) { - vec3 result = set_lum (set_sat (source, sat (backdrop)), lum (backdrop)); - return mix (source, result, opacity); + vec3 B = set_lum (Cs.rgb, lum (Cb.rgb)); + return composite (Cs, Cb, B); } -vec3 -saturation (vec3 source, vec3 backdrop, float opacity) +vec4 +hue (vec4 Cs, vec4 Cb) { - vec3 result = set_lum (set_sat (backdrop, sat (source)), lum (backdrop)); - return mix (source, result, opacity); + vec3 B = set_lum (set_sat (Cs.rgb, sat (Cb.rgb)), lum (Cb.rgb)); + return composite (Cs, Cb, B); } -vec3 -luminosity (vec3 source, vec3 backdrop, float opacity) +vec4 +saturation (vec4 Cs, vec4 Cb) { - vec3 result = set_lum (backdrop, lum (source)); - return mix (source, result, opacity); + vec3 B = set_lum (set_sat (Cb.rgb, sat (Cs.rgb)), lum (Cb.rgb)); + return composite (Cs, Cb, B); } -float -combine (float source, float backdrop) +vec4 +luminosity (vec4 Cs, vec4 Cb) { - return source + backdrop * (1 - source); + vec3 B = set_lum (Cb.rgb, lum (Cs.rgb)); + return composite (Cs, Cb, B); } void main() { vec4 source = texture (startTexture, inStartTexCoord); vec4 backdrop = texture (endTexture, inEndTexCoord); - vec3 rgb = vec3(1,0,0); - float a = 1; - - a = combine (source.a, backdrop.a); + vec4 result; - if (inBlendMode == 0) // default - { - rgb = source.rgb; - a = source.a; - } + if (inBlendMode == 0) + result = normal (source, backdrop); else if (inBlendMode == 1) - rgb = multiply (source.rgb, backdrop.rgb, backdrop.a); + result = multiply (source, backdrop); else if (inBlendMode == 2) - rgb = screen (source.rgb, backdrop.rgb, backdrop.a); + result = screen (source, backdrop); else if (inBlendMode == 3) - rgb = overlay (source.rgb, backdrop.rgb, backdrop.a); + result = overlay (source, backdrop); else if (inBlendMode == 4) - rgb = darken (source.rgb, backdrop.rgb, backdrop.a); + result = darken (source, backdrop); else if (inBlendMode == 5) - rgb = lighten (source.rgb, backdrop.rgb, backdrop.a); + result = lighten (source, backdrop); else if (inBlendMode == 6) - rgb = color_dodge (source.rgb, backdrop.rgb, backdrop.a); + result = color_dodge (source, backdrop); else if (inBlendMode == 7) - rgb = color_burn (source.rgb, backdrop.rgb, backdrop.a); + result = color_burn (source, backdrop); else if (inBlendMode == 8) - rgb = hard_light (source.rgb, backdrop.rgb, backdrop.a); + result = hard_light (source, backdrop); else if (inBlendMode == 9) - rgb = soft_light (source.rgb, backdrop.rgb, backdrop.a); + result = soft_light (source, backdrop); else if (inBlendMode == 10) - rgb = difference (source.rgb, backdrop.rgb, backdrop.a); + result = difference (source, backdrop); else if (inBlendMode == 11) - rgb = exclusion (source.rgb, backdrop.rgb, backdrop.a); + result = exclusion (source, backdrop); else if (inBlendMode == 12) - rgb = color (source.rgb, backdrop.rgb, backdrop.a); + result = color (source, backdrop); else if (inBlendMode == 13) - rgb = hue (source.rgb, backdrop.rgb, backdrop.a); + result = hue (source, backdrop); else if (inBlendMode == 14) - rgb = saturation (source.rgb, backdrop.rgb, backdrop.a); + result = saturation (source, backdrop); else if (inBlendMode == 15) - rgb = luminosity (source.rgb, backdrop.rgb, backdrop.a); + result = luminosity (source, backdrop); else discard; - outColor = clip (inPos, vec4 (rgb, a)); + outColor = clip (inPos, result); } diff --git a/gsk/resources/vulkan/blendmode.frag.spv b/gsk/resources/vulkan/blendmode.frag.spv index e3e681df6f58ef9c3ea41fbcc665bf88be83029e..e74f8561744928c75779a45cfa1813675d82b5c7 100644 GIT binary patch literal 26660 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 t=Yy?Xo7XLm?So+J&}I+h+FaXy;h>Fq# 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 -- 2.30.2